package com.itheima_16;

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;

public class CopyFileDemo {
    public static void main(String[] args) throws IOException {
        // 记录开始时间
        long startTime = System.currentTimeMillis();

        // 复制文件
//        method1();
//        method2();
//        method3();
        method4();

        // 记录结束时间
        long endTime = System.currentTimeMillis();
        System.out.println("共耗时：" + (endTime - startTime) + "毫秒");
    }

    // 字节缓存流，一次读取一个字节流数组
    // 共耗时：18毫秒
    public static void method4() throws IOException {
        BufferedInputStream bis = new BufferedInputStream(Files.newInputStream(Paths.get("/Users/oscar/Desktop/HQWork/学习资料/Java基础/1-01 就业课(2.1)-基础语法/第1节 JDK和Path环境变量/001_Java语言发展史.mp4")));
        BufferedOutputStream bos = new BufferedOutputStream(Files.newOutputStream(Paths.get("/Users/oscar/Desktop/HQWork/学习资料/code/mySimpleDateFormat/001_Java语言发展史.mp4")));

        byte[] bytes = new byte[1024];
        int len;
        while ((len = bis.read(bytes)) != -1) {
            bos.write(bytes,0,len);
        }

        bos.close();
        bis.close();
    }

    // 字节缓存流，一次读取一个字节
    // 共耗时：166毫秒
    public static void method3() throws IOException {
        BufferedInputStream bis = new BufferedInputStream(Files.newInputStream(Paths.get("/Users/oscar/Desktop/HQWork/学习资料/Java基础/1-01 就业课(2.1)-基础语法/第1节 JDK和Path环境变量/001_Java语言发展史.mp4")));
        BufferedOutputStream bos = new BufferedOutputStream(Files.newOutputStream(Paths.get("/Users/oscar/Desktop/HQWork/学习资料/code/mySimpleDateFormat/001_Java语言发展史.mp4")));

        int by;
        while ((by = bis.read()) != -1) {
            bos.write(by);
        }

        bos.close();
        bis.close();
    }

    // 基本字节流，一次读取一个字节流数组
    // 共耗时：60毫秒
    public static void method2() throws IOException {
        FileInputStream fis = new FileInputStream("/Users/oscar/Desktop/HQWork/学习资料/Java基础/1-01 就业课(2.1)-基础语法/第1节 JDK和Path环境变量/001_Java语言发展史.mp4");
        FileOutputStream fos = new FileOutputStream("/Users/oscar/Desktop/HQWork/学习资料/code/mySimpleDateFormat/001_Java语言发展史.mp4");

        byte[] bytes = new byte[1024];
        int len;
        while ((len = fis.read(bytes)) != -1) {
            fos.write(bytes, 0, len);
        }

        fos.close();
        fis.close();
    }

    // 基本字节流，一次读取一个字节
    // 共耗时：26020毫秒
    public static void method1() throws IOException {
        FileInputStream fis = new FileInputStream("/Users/oscar/Desktop/HQWork/学习资料/Java基础/1-01 就业课(2.1)-基础语法/第1节 JDK和Path环境变量/001_Java语言发展史.mp4");
        FileOutputStream fos = new FileOutputStream("/Users/oscar/Desktop/HQWork/学习资料/code/mySimpleDateFormat/001_Java语言发展史.mp4");

        int by;
        while ((by = fis.read()) != -1) {
            fos.write(by);
        }

        fos.close();
        fis.close();
    }
}
